class_name HWeapon
extends HItem

## 武器基类
## 继承自HItem，提供武器的基础属性和功能
## 负责武器的通用属性管理，如攻击力、耐久度等

# 武器基础属性
var damage: int = 0  # 武器攻击力
var durability: int = 100  # 武器耐久度
var max_durability: int = 100  # 最大耐久度
var weapon_type: String = ""  # 武器类型标识

## 武器使用函数（新接口）
## 实现武器的基础使用逻辑
## @param context: 物品使用上下文
func item_use(context: ItemUseContext):
	super.item_use(context)  # 调用父类的使用逻辑
	
	if not can_use(context):
		return
	
	# 执行武器使用逻辑
	perform_weapon_use(context)

## 检查武器是否可用
## @param context: 物品使用上下文
## @return bool: 武器是否可以使用
func can_use(context: ItemUseContext) -> bool:
	if not super.can_use(context):
		return false
	
	if not is_usable():
		print("武器已损坏，无法使用: ", name)
		return false
	
	return true

## 执行武器使用逻辑
## 子类可重写此方法实现具体的武器使用效果
## @param context: 物品使用上下文
func perform_weapon_use(context: ItemUseContext):
	print("执行武器使用: ", name)
	# 子类应重写此方法实现具体使用逻辑
	
	# 使用后减少耐久度
	reduce_durability()

## 检查武器是否可用
## @return bool: 武器是否还有耐久度可以使用
func is_usable() -> bool:
	return durability > 0

## 减少武器耐久度
## @param amount: 要减少的耐久度数值
func reduce_durability(amount: int = 1):
	durability = max(0, durability - amount)
	if durability <= 0:
		on_weapon_broken()

## 武器损坏时的回调
## 子类可重写此方法来处理武器损坏的特殊逻辑
func on_weapon_broken():
	print("武器已损坏: ", name)

## 重写父类的load_data方法
## 加载武器特有的数据
func load_data(data: Dictionary = {}):
	super.load_data(data)
	
	# 加载武器特有属性
	damage = data.get("damage", 0)
	durability = data.get("durability", 100)
	max_durability = data.get("max_durability", 100)
	weapon_type = data.get("weapon_type", "")

## 重写父类的save_data方法
## 保存武器特有的数据
func save_data() -> Dictionary:
	var data = super.save_data()
	
	# 保存武器特有属性
	data["damage"] = damage
	data["durability"] = durability
	data["max_durability"] = max_durability
	data["weapon_type"] = weapon_type
	
	return data
